home *** CD-ROM | disk | FTP | other *** search
/ NeXT Education Software Sampler 1992 Fall / NeXT Education Software Sampler 1992 Fall.iso / SoundAndMusic / cmix / lpc / stabilization / main.c < prev    next >
C/C++ Source or Header  |  1990-02-03  |  2KB  |  87 lines

  1. #include <stdio.h>
  2. #include <sys/file.h>
  3. #include <sys/types.h>
  4. #define FLOAT 4
  5. main(argc,argv)
  6. int argc; 
  7. char *argv[];
  8. {
  9.         int anal,pitches,j,jj;
  10.     int npoles,lpcframe,pchframe,pchlast,nbpch;
  11.     int correct_();
  12.     int nskiplpc,nskippch,nbytes,nblpc;
  13.     char  input[32],*output;
  14.     float pch[2],val[1];
  15.     float y[50],frame[50],new;
  16.     int out,i;
  17.     int flag,framenum;
  18.     /*
  19.     printf(" Enter name of lpc analysis file\t");
  20.     scanf("%s",output);
  21.     */
  22.     output = argv[1];
  23.     if((anal = open(output,2)) < 0) {
  24.         fprintf(stderr," Can't open lpc analysis file");
  25.         exit(1);
  26.         }
  27. flag = 1;
  28.     if((out = open("badframes",O_CREAT|O_RDWR, 0644)) < 0) {
  29.         fprintf(stderr,"Can't open outputfile\n");
  30.         exit(-2);
  31.         }
  32. printf("anal and out = %d %d %d\n",anal,out,sizeof(framenum));
  33. /*
  34.     printf(" Enter number of poles in lpc analysis\t");
  35.     scanf("%d",&npoles);
  36. */
  37.     npoles = atoi(argv[2]);
  38.     printf("npoles = %d\n",npoles);
  39.     nblpc = (npoles+4)*FLOAT;/*to beginning of next pchloc*/
  40.     framenum = 0;
  41.     lseek(anal,0,0);
  42.     nbytes = 4;
  43.     while(1) {
  44.         if((read(anal,(char *)frame,nblpc)) != nblpc) {
  45.             printf("Bad read on lpc analysis file\n");
  46.             printf("nblpc = %d %d\n",nblpc,jj);
  47.             exit(1);
  48.             }
  49.         for(i=0; i<npoles; i++) y[i] = -frame[npoles+3-i];
  50.         stabletest_(y,&npoles,&flag);
  51.         if(!flag) printf("flag,framenum %d %d\n",flag,framenum);
  52.         if(!flag) if(jj=write(out,&framenum,nbytes) != nbytes) {
  53.             printf("bad write on output file %d\n",jj);
  54.             exit(-1);
  55.             }
  56.  
  57. /*
  58. if(!flag){ printf("tobefixed\n"); for(i=0; i<npoles+4; i++) printf(" %f",frame[i]);
  59. printf("\n");
  60. }
  61. */
  62. if(!flag) printf("fixing frame number %d\n",framenum);
  63.         if(!flag) {
  64.         /*
  65. printf("before correction npoles = %d\n",npoles);
  66. for(i=0; i<npoles+4; i++) printf(" %f",frame[i]);
  67. */
  68.         correct_(frame,&npoles,y);
  69. for(i=4; i<npoles+4; i++) frame[i] = y[i-4]; 
  70. /*
  71. printf("after correction\n");
  72. for(i=0; i<npoles+4; i++) printf(" %f",frame[i]);
  73. printf("\n");
  74. */
  75.         lseek(anal,-nblpc,1);
  76.         if((write(anal,(char *)frame,nblpc)) != nblpc) {
  77.             printf("Bad write on lpc analysis file\n");
  78.             printf("nblpc = %d %d\n",nblpc,jj);
  79.             exit(1);
  80.             }
  81.  
  82.     }
  83.     framenum++;
  84.     fflush(stdout);
  85.     }
  86. }
  87.